package com.hengpeng.itfin.service.assign;

import java.util.List;

import com.hengpeng.common.exception.ServiceResult;
import com.hengpeng.itfinbase.message.partner.CreditAssignRequest;
import com.hengpeng.itfinbase.message.partner.CreditAssignResponse;
import com.hengpeng.itfinbase.persist.CreditAssign;
import com.hengpeng.itfinbase.persist.CreditAssign.AssignStatus;

/**
 * <pre>
 * 债权转让相关服务
 * </pre>
 * @author weiyuan
 * @version 1.0, 2015年7月26日
 */
public interface AssignService
{
	/**
	 * <pre>
	 * 投资人创建发布债权转让
	 * </pre>
	 * @param reqMsg
	 */
	public CreditAssignResponse createAssign(CreditAssignRequest reqMsg);

	/**
	 * <pre>
	 * 债权转让前动作
	 * </pre>
	 * @param reqMsg
	 */
	public void packCreditAssing(CreditAssignRequest reqMsg);

	/**
	 * <pre>
	 * 处理债权转让结果
	 * </pre>
	 * @param response
	 * @return
	 */
	public ServiceResult<String> dealAssignResult(CreditAssignResponse response);

	/**
	 * <pre>
	 * 获取债权转让信息
	 * </pre>
	 * @param status
	 * @return
	 */
	public List<CreditAssign> getCreditAssigns(AssignStatus[] status);
	/**
	 * <pre>
	 * 截止债权转让截止定时作业
	 * </pre>
	 * @param creditAssigns
	 */
	public void endAssign (List<CreditAssign> creditAssigns);
	/**
	 * <pre>
	 * 执行债权转让截止操作
	 * </pre>
	 * @param creditAssign
	 */
	public void doEndAssign (CreditAssign creditAssign);

}
